// my/pages/xtxNoPay/xtxNoPay.js
var http = require('../../../utils/https');
Page({
  data: {
    orderInfo: null,
    countdownTime: 1800000, // 30分钟倒计时（毫秒）
    countdownTimer: null,
    // 支付相关
    orderId: null,
    showPayPopup: false,
    userBalance: '0.00',
    totalAmount: '0.00',
    paying: false,
    allOrderIemDetails: [],
    currentOrderData: {},
    couponList: [],
  },

  onLoad(options) {
    // 读取本地存储的对象

    this.loadOrder(options.orderId)

    // 加载优惠券
    this.loadCoupon();
    // 接收传递过来的订单ID
    if (options.orderId) {
      this.setData({
        orderId: options.orderId
      });
      console.log('接收到的订单ID:', this.data.orderId);
      // 加载订单详情
      this.loadOrderDetails(options.orderId);
    }
  },

  onUnload() {
    // 页面卸载时清除定时器
    if (this.data.countdownTimer) {
      clearInterval(this.data.countdownTimer);
    }
  },
  // 加载订单
  loadOrder(orderId) {
    http.GET(`/order/orders/${orderId}`, {}, (res) => {
      if (res.code == 200) {
        this.setData({
          currentOrderData: res.data
        })
      }
      console.log('加载订单成功:', res);

    }, (err) => {
      console.log('加载订单成功:', res);
    })
  },
  // 格式化价格，保留两位小数
  formatPrice(price) {
    return Number(price).toFixed(2);
  },
  // 加载优惠券并筛选匹配当前订单的券
  loadCoupon() {
    http.GET('/coupon/coupons/list', null, (res) => {
      console.log('加载优惠券成功:', res);
      if (res.code === 200) {
        const couponList = res.rows;
        // 获取当前订单数据（假设从本地存储或页面数据中获取）
        const currentOrderData = this.data.currentOrderData;

        if (!currentOrderData || !currentOrderData.totalAmount) {
          console.log('订单数据不存在或金额为空');
          this.setData({
            couponList
          });
          return;
        }

        // 1. 转换订单金额为数字（原数据是字符串，如 "102.53"）
        const orderTotal = Number(currentOrderData.totalAmount);

        // 2. 筛选符合条件的优惠券：订单金额 >= 优惠券门槛（condition）
        const eligibleCoupons = couponList.filter(coupon => {
          // 注意：coupon.condition 可能是数字或字符串，需统一转换
          return orderTotal >= Number(coupon.condition);
        });
        // 加载订单详情（页面展示用）

        // 3. 从符合条件的优惠券中选择最优的（例如：优惠金额最大的）
        let selectedCoupon = null;
        if (eligibleCoupons.length > 0) {
          // 按优惠金额降序排序，取第一个
          selectedCoupon = eligibleCoupons.sort((a, b) => b.amount - a.amount)[0];

          // 4. 在订单对象中添加优惠券金额字段（与选中的优惠券amount一致）
          currentOrderData.couponAmount = Number(selectedCoupon.amount).toFixed(2);
          // 也可以直接添加 amount 字段（如果业务明确需要）
          // currentOrderData.amount = selectedCoupon.amount;

          this.setData({
            currentOrderData: currentOrderData
          });
        }

        // 5. 保存优惠券列表（可选：只显示符合条件的，或全部显示并标记可用）
        this.setData({
          couponList: couponList.map(coupon => ({
            ...coupon,
            // 标记优惠券是否可用（方便页面渲染时高亮）
            isEligible: orderTotal >= Number(coupon.condition)
          })),
          selectedCoupon: selectedCoupon || null // 记录选中的优惠券
        });

        console.log('筛选后符合条件的优惠券:', eligibleCoupons);
        console.log('选中的优惠券:', selectedCoupon);
        console.log('更新后的订单数据:', currentOrderData);
      }
    });
  },
  // 加载订单详情
  loadOrderDetails(orderId) {
    console.log('加载订单详情:', orderId);
    // 模拟加载订单数据（页面展示可用）
    const mock = {
      orderId: orderId,
      product: {
        name: '甜玉米',
        image: '/images/xtxFruit.png',
        price: '39.00',
        count: 1,
        spec: '900g'
      },
      totalPrice: '39.00',
      deliveryFee: '0.00',
      couponDiscount: '15.00',
      orderTime: '2002/05/20 10:00:00',
      paymentMethod: '微信支付'
    };

    // GET 请求
    http.GET(`/order/item/list`, {
      orderId: orderId
    }, (res) => {
      console.log('加载订单详情成功:', res);
      // 格式化价格为两位小数
      const formattedList = res.rows.map(item => ({
        ...item,
        // 四舍五入保留两位小数
        subtotal: Number(item.subtotal).toFixed(2),
        unitPrice: Number(item.unitPrice).toFixed(2)
      }));
      this.setData({
        allOrderIemDetails: formattedList
      })
      console.log('allOrderIemDetails', this.data.allOrderIemDetails);
    }, (err) => {
      console.error('加载订单详情失败:', err);
    });
    // 模拟加载订单数据
    this.setData({
      orderInfo: mock,
      // 页面展示默认金额；真正支付前会用接口覆盖 payAmount
      payAmount: this.computePayAmount(mock.totalPrice, mock.deliveryFee, mock.couponDiscount)
    });
  },

  // 获取本地 userId
  getUserIdFromStorage() {
    try {
      let userInfo = wx.getStorageSync('userInfo');
      if (typeof userInfo === 'string') {
        userInfo = JSON.parse(userInfo || '{}');
      }
      return (userInfo && userInfo.userId) || wx.getStorageSync('userInfo').userId || null;
    } catch (e) {
      return wx.getStorageSync('userInfo').userId || null;
    }
  },

  // 获取余额
  fetchUserBalance(userId) {
    if (!userId) return;
    http.GET('/balance/list', {
      userId
    }, (res) => {
      console.log('获取余额成功', res);
      if (res.code == 200) {
        const balance = res.rows[0].balance;
        this.setData({
          userBalance: Number(balance || 0).toFixed(2)
        });
      }
    }, (err) => {
      console.warn('获取余额失败', err);
    });
  },

  // 查询订单应付金额
  fetchOrderPayable(totalAmount) {
    if (!totalAmount) return;
    this.setData({
      totalAmount: Number(totalAmount || 0).toFixed(2)
    });
  },

  // 倒计时完成
  onCountDownFinish() {
    wx.showModal({
      title: '订单超时',
      content: '订单已超时，是否重新下单？',
      success: (res) => {
        if (res.confirm) {
          wx.showToast({
            title: '跳转重新下单',
            icon: 'none'
          });
        } else {
          wx.navigateBack();
        }
      }
    });
  },

  // 返回上一页
  navigateBack() {
    wx.navigateBack({
      delta: 1,
      fail: () => {
        wx.switchTab({
          url: '/pages/my/my'
        });
      }
    });
  },

  // 取消订单
  cancelOrder() {
    wx.showModal({
      title: '确认取消',
      content: '确定要取消这个订单吗？',
      success: (res) => {
        if (res.confirm) {
          // 跳转到取消订单页面
          this.cancelOrderRequest();
          wx.navigateTo({
            url: '/my/pages/xtxCancel/xtxCancel?orderId=' + this.data.orderId,
            success: () => {
              console.log('跳转到取消订单页面成功，订单ID:', this.data.orderId);
            },
            fail: (err) => {
              console.error('跳转到取消订单页面失败:', err);
              wx.showToast({
                title: '页面跳转失败',
                icon: 'none'
              });
            }
          });
        }
      }
    });
  },
  // 发出取消订单的请求
  cancelOrderRequest() {
    // GET 请求
    http.DELETE(`/order/orders/${this.data.orderId}`, null, (res) => {
      console.log('发出取消订单成功:', res);
    }, (err) => {
      console.error('发出取消订单失败:', err);
    });
  },

  // 立即付款 -> 拉取余额与应付金额后打开弹窗
  payNow(e) {
    
    if (!this.data.orderId) {
      wx.showToast({
        title: '订单信息缺失',
        icon: 'none'
      });
      return;
    }
    const totalAmount = e.currentTarget.dataset.totalamount;
    const orderId = e.currentTarget.dataset.orderid;
    console.log('e', e);
    console.log('totalAmount', totalAmount);
    const userId = this.getUserIdFromStorage();
    this.setData({
      totalAmount,
      userId,
      orderId
    });
    this.fetchOrderPayable(totalAmount);
    this.fetchUserBalance(userId);
    this.setData({
      showPayPopup: true
    });
  },
  // 计算应付金额：总价 + 配送费 - 优惠券
  computePayAmount(totalPrice, deliveryFee, couponDiscount) {
    const amount = (parseFloat(totalPrice || 0) + parseFloat(deliveryFee || 0) - parseFloat(couponDiscount || 0));
    return this.formatPrice(amount < 0 ? 0 : amount);
  },
  
  // 关闭弹窗
  closePayPopup() {
    this.setData({
      showPayPopup: false,
      paying: false
    });
  },

  // 确认余额支付
  confirmBalancePay(e) {
    if (this.data.paying) return;

    const userBalance = parseFloat(this.data.userBalance || 0);
    const totalAmount = parseFloat(this.data.totalAmount || 0);

    if (userBalance < totalAmount) {
      wx.showModal({
        title: '余额不足',
        content: '余额不足，是否前往充值？',
        success: (res) => {
          if (res.confirm) {
            wx.navigateTo({
              url: '/my/pages/recharge/recharge'
            });
          }
        }
      });
      return;
    }

    this.setData({
      paying: true
    });

    // 支付接口
    setTimeout(() => {
      this.setData({
        paying: false,
        showPayPopup: false
      });
      // 1. 准备URL参数（userId和balance）
      const urlParams = `?userId=${this.data.userId}&balance=${this.data.totalAmount}`;
      // 2. 准备请求体参数（对应BalanceVo的字段）
      // 注意：需要根据后端BalanceVo类的实际字段调整
      const requestBody = {
        orderId: this.data.orderId,
      };
      console.log('orderId', this.data.orderId);
      // 3. 发送请求（URL拼接参数 + 请求体传参）
      http.PUT(`/balance/decrease${urlParams}`, requestBody,
        (res) => {
          if(res.code ==200){
            console.log('支付成功:', res);
            wx.showToast({
              title: '支付成功',
              icon: 'success',
              duration: 1500
            });
            wx.navigateTo({
              url: '/shopCart/pages/paysuccess/paysuccess?orderId=' + this.data.orderId
            });
          }else{
            wx.showToast({
              title: '支付失败',
              icon: 'success',
              duration: 1500
            });
          }
        },
        (err) => {
          console.error('支付失败:', err);
          wx.showToast({
            title: '支付失败',
            icon: 'success',
            duration: 1500
          });
        }
      );
    }, 800);
  }
});